Due to advances in computing technology, businesses today are able to operate more efficiently when compared to substantially similar businesses only a few years ago. For example, internal networking enables employees of a company to communicate instantaneously by email, quickly transfer data files to disparate employees, manipulate data files, share data relevant to a project to reduce duplications in work product, etc. Furthermore, advancements in technology have enabled factory applications to become partially or completely automated. For instance, operations that once required workers to put themselves proximate to heavy machinery and other various hazardous conditions can now be completed at a safe distance therefrom.
Further, imperfections associated with human action have been minimized through employment of highly precise machines. Many of these factory devices supply data related to manufacturing to databases or web services referencing databases that are accessible by system/process/project managers on a factory floor. For instance, sensors and associated software can detect a number of instances that a particular machine has completed an operation given a defined amount of time. Further, data from sensors can be delivered to a processing unit related to system alarms. Thus, a factory automation system can review collected data and automatically and/or semi-automatically schedule maintenance of a device, replacement of a device, and other various procedures that relate to automating a process.
While various advancements have been made with respect to automating an industrial process, utilization and design of controllers has been largely unchanged. Industrial controllers are special-purpose computers utilized for controlling industrial processes, manufacturing equipment, and other factory automation processes, such as data collection through networked systems. Controllers often work in concert with other computer systems to form an environment whereby a majority of modern and automated manufacturing operations occur. These operations involve front-end processing of materials such as steel production to more intricate manufacturing processes such as automobile production that involves assembly of previously processed materials. Often such as in the case of automobiles, complex assemblies can be manufactured with high technology robotics assisting the industrial control process.
In many automated processes, including the basic production of commodities such as food, beverages, and pharmaceuticals, complex state logic is often designed and programmed by systems Engineers or provided in some cases by automated equipment manufacturers. This logic is often programmed with common PLC ladder logic or higher level languages supported by Sequential Function Charts or Function Blocks. Sequence logic can be employed for a plurality of tasks such as material movement and conveying operations, packaging operations, or as part of an assembly process itself, wherein various stages of an assembly are sequenced from stage to stage until a final assembly occurs. As can be appreciated, much planning and design is required to implement an automated production process that can involve hundreds of machines, computers, and program logic to facilitate proper operation of the respective sequences.
A common problem associated with control systems is lack of uniformity across system/process boundaries, as well as a lack of uniformity between controller manufacturers, software vendors, and customers. Such non-uniformity can be as simplistic as discrepancies in naming conventions between a software vendor and a customer, or as complex as disparate software representations with respect to portions of an industrial automation framework. Given the above-mentioned discrepancies (as well as a myriad of other discrepancies), a substantial amount of ad-hoc coding is often required to automate a process. Accordingly, significant cost is incurred by a manufacturer to employ computer and programming specialists to generate and maintain ad-hoc programs necessary to automate a manufacturing process. This cost is then passed on to purchasers of the manufactured product.
With more detail regarding conventional controllers, such controllers have been designed to efficiently undertake real-time control. For instance, conventional programmable logic controllers receive data from sensors and, based upon the received data, control an actuator, drive, or the like. These controllers recognize a source and/or destination of the data by way of a symbol and/or address associated with a source and/or destination. More particularly, industrial controllers include communications ports and/or adaptors, and sensors, actuators, drives, and the like are communicatively coupled to such ports/adaptors. Thus, a controller can recognize device identify when data is received and further deliver control data to an appropriate device.
As can be discerned from the above, data associated with conventional industrial controllers is created, delivered, and/or stored with a flat namespace data structure. In other words, all that can be discovered by reviewing data received and/or output by a controller is an identity of an actuator or sensor and a status thereof. This industrial controller architecture operates efficiently for real-time control of a particular device—however, problems can arise when data from industrial controllers is desired for use by a higher-level system. For example, if data from the controller was desired for use by a scheduling application, individual(s) familiar with the controller must determine which data is desirable, sort the data, package the data in a desired format, and thereafter map such data to the scheduling application. This introduces another layer of software, and thus provides opportunities for confusion in an industrial automation environment. The problem is compounded if several applications wish to utilize similar data. In operation, various controllers output data, package it in a flat namespace structure, and provide it to a network. Each application utilizing the data copies such data to internal memory, sorts the data, organizes the data, and packages the data in a desired format. Accordingly, multiple copies of similar data exist in a plurality of locations, where each copy of the data may be organized and packaged disparately.
As can be discerned from the above, locating and interpreting a particular piece of data can be extremely difficult. For instance, the data appears as a collection of ones and zeros, and unless one is knowledgeable of the data standard, determining meaning of such data can be extremely difficult. Furthermore, one must have knowledge of where data is physically stored to locate desired data. For instance, data from a first programmable logic controller can be stored in a first data store while data from a second programmable logic controller can be stored in a second data store, and data cannot be intermingled due to disparate proprietary setup of the programmable logic controllers (e.g., they output data in a disparate manner).